
// pages/faceBeauty/index.js
Page({
  data: {
    imageUrl: '', // 图片临时路径
    imageFile: null, // 图片文件对象
    analysisResult: null, // 分析结果
    isAnalyzing: false // 是否正在分析中
  },

  onLoad: function (options) {
    // 页面加载时的逻辑
  },

  // 显示图片选择选项
  showImageOptions: function() {
    const that = this;
    wx.showActionSheet({
      itemList: ['从相册选择', '拍摄照片'],
      success: function(res) {
        if (res.tapIndex === 0) {
          // 从相册选择
          wx.chooseMedia({
            count: 1,
            mediaType: ['image'],
            sourceType: ['album'],
            success: function(res) {
              that.setData({
                imageUrl: res.tempFiles[0].tempFilePath,
                imageFile: res.tempFiles[0],
                analysisResult: null // 清空之前的分析结果
              });
            }
          });
        } else if (res.tapIndex === 1) {
          // 拍摄照片
          wx.chooseMedia({
            count: 1,
            mediaType: ['image'],
            sourceType: ['camera'],
            success: function(res) {
              that.setData({
                imageUrl: res.tempFiles[0].tempFilePath,
                imageFile: res.tempFiles[0],
                analysisResult: null // 清空之前的分析结果
              });
            }
          });
        }
      }
    });
  },

  // 分析图片
  analyzeImage: function () {
    if (!this.data.imageUrl) {
      wx.showToast({
        title: '请先选择或拍摄照片',
        icon: 'none'
      });
      return;
    }

    const that = this;
    
    // 显示加载提示
    wx.showLoading({
      title: '分析中...',
    });

    that.setData({
      isAnalyzing: true
    });

    try {
      // 上传图片到云存储
      wx.cloud.uploadFile({
        cloudPath: 'face-beauty/' + new Date().getTime() + '.jpg',
        filePath: that.data.imageUrl,
        success: res => {
          // 获取图片的云存储路径
          const fileID = res.fileID;
          console.log('上传成功，fileID:', fileID);
          
          // 调用云函数进行人脸颜值分析
          wx.cloud.callFunction({
            name: 'faceBeautyAnalysis',
            data: {
              fileID: fileID
            },
            success: result => {
              wx.hideLoading();
              console.log('分析结果:', result);
              
              // 处理返回的结果
              if (result.result && result.result.code === 0) {
                // 分析成功
                that.setData({
                  analysisResult: that.processAnalysisResult(result.result.data),
                  isAnalyzing: false
                });
              } else {
                // 分析失败
                console.error('分析失败:', result);
                wx.showToast({
                  title: result.result ? result.result.message : '分析失败，请重试',
                  icon: 'none',
                  duration: 2000
                });
                that.setData({
                  isAnalyzing: false
                });
              }
            },
            fail: err => {
              wx.hideLoading();
              console.error('云函数调用失败:', err);
              wx.showToast({
                title: '分析失败，请检查云函数配置',
                icon: 'none',
                duration: 2000
              });
              that.setData({
                isAnalyzing: false
              });
            }
          });
        },
        fail: err => {
          wx.hideLoading();
          console.error('上传图片失败:', err);
          wx.showToast({
            title: '上传图片失败，请检查云环境配置',
            icon: 'none',
            duration: 2000
          });
          that.setData({
            isAnalyzing: false
          });
        }
      });
    } catch (error) {
      wx.hideLoading();
      console.error('发生异常:', error);
      wx.showToast({
        title: '操作异常，请重试',
        icon: 'none',
        duration: 2000
      });
      that.setData({
        isAnalyzing: false
      });
    }
  },

  // 处理分析结果
  processAnalysisResult: function(data) {
    // 性别映射
    const genderMap = {
      0: '女性',
      1: '男性'
    };
    
    // 脸型映射
    const faceShapeMap = {
      0: '方形',
      1: '三角形',
      2: '椭圆形',
      3: '心形',
      4: '圆形'
    };
    
    // 情绪映射
    const emotionMap = {
      0: '惊讶',
      1: '恐惧',
      2: '厌恶',
      3: '高兴',
      4: '悲伤',
      5: '愤怒',
      6: '平静',
      7: '困惑'
    };
    
    // 头发颜色映射
    const hairColorMap = {
      0: '黑色',
      1: '金色',
      2: '棕色',
      3: '灰白色'
    };
    
    // 头发长度映射
    const hairLengthMap = {
      0: '光头',
      1: '短发',
      2: '中发',
      3: '长发'
    };
    
    // 刘海映射
    const bangMap = {
      0: '无刘海',
      1: '有刘海'
    };
    
    // 帽子映射
    const hatMap = {
      0: '不戴帽子',
      1: '戴帽子'
    };
    
    // 口罩映射
    const maskMap = {
      0: '不戴口罩',
      1: '戴口罩'
    };
    
    // 胡子映射
    const moustacheMap = {
      0: '没有胡子',
      1: '有胡子'
    };

    // 构建结果对象
    const result = {
      score: data.Beauty || 0,
      details: [
        { name: '年龄', value: data.Age || '未知' },
        { name: '性别', value: genderMap[data.Gender] || '未知' },
        { name: '脸型', value: faceShapeMap[data.FaceShape] || '未知' },
        { name: '情绪', value: emotionMap[data.Emotion] || '未知' },
        { name: '微笑程度', value: data.Smile ? data.Smile + '%' : '未知' },
        { name: '嘴巴张开程度', value: data.Mouth?.MouthOpen ? data.Mouth.MouthOpen + '%' : '未知' },
        { name: '眼睛睁开程度', value: data.Eye?.EyeOpen ? data.Eye.EyeOpen + '%' : '未知' },
        { name: '眼睛大小', value: data.Eye?.EyeSize ? data.Eye.EyeSize + '%' : '未知' },
        { name: '眉毛浓密程度', value: data.Eyebrow?.EyebrowDensity ? data.Eyebrow.EyebrowDensity + '%' : '未知' },
        { name: '眉毛弯曲程度', value: data.Eyebrow?.EyebrowCurve ? data.Eyebrow.EyebrowCurve + '%' : '未知' },
        { name: '鼻子大小', value: data.Nose?.NoseSize ? data.Nose.NoseSize + '%' : '未知' },
        { name: '肤色深浅', value: data.Skin?.SkinDarkness ? data.Skin.SkinDarkness + '%' : '未知' },
        { name: '肤色健康程度', value: data.Skin?.SkinHealthy ? data.Skin.SkinHealthy + '%' : '未知' },
        { name: '头发颜色', value: hairColorMap[data.Hair?.Color] || '未知' },
        { name: '头发长度', value: hairLengthMap[data.Hair?.Length] || '未知' },
        { name: '刘海', value: bangMap[data.Hair?.Bang] || '未知' },
        { name: '帽子', value: hatMap[data.Hat] || '未知' },
        { name: '口罩', value: maskMap[data.Mask] || '未知' },
        { name: '胡子', value: moustacheMap[data.Moustache] || '未知' }
      ]
    };

    return result;
  }
});